// 假设违禁词列表
const forbiddenWords = ['傻逼', '神经病', '操你妈', '草泥马', '你妈逼', '滚', '死全家',
    '狗日的', '狗屎', '屎', '贱人', '傻B', '傻比', '傻x', '傻气', '傻子', '傻逼', '傻比',
    '傻B', '傻x', '傻气', '傻子', '傻逼', '傻比', '傻B', '傻x', '傻气', '傻子', '傻逼',
    '傻比', '傻B', '傻x', '傻气', '傻子', '傻逼', '傻比', '傻B', '傻x', '傻气', '傻子'
    , '傻逼'];

// 检查文本是否包含违禁词
function containsForbiddenWords(text) {
    return forbiddenWords.some(word => text.includes(word));
}

// 取地址栏ID
const paramValue = new URLSearchParams(window.top.location.search).get('id');

// 初始化sourceModule
let sourceModule = 'shopping'; // 默认值

// 页面加载完成后立即获取并渲染评论数据
$(document).ready(function () {
    getReview(sourceModule);
});

// 监听按钮点击事件
$('.review-button').click(function () {
    sourceModule = $(this).attr('id');
    $('.review-module').html('');
    getReview(sourceModule);
});

// 获取并渲染评论
function getReview(sourceModule) {
    $.post(port + 'getReview', { sourceModule }, function (data) {
        data = JSON.parse(data);
        renderReviews(data);
        updateChart(data);
    });
}

// 渲染评论
function renderReviews(data) {
    $('.review-module').html(''); // 清空评论模块
    if (data.module.length === 0) {
        // 如果没有评论，显示提示信息
        $('.review-module').append('<div class="no-review">暂无评论，您可来抢沙发！！</div>');
    } else {
        // 如果有评论，渲染评论
        data.module.forEach(item => {
            let newReviewDiv = `
                <div class="review">
                    <div class="avatar">
                        <img src="${item.avatar}" alt="">
                    </div>
                    <div class="review-content">    
                        <div class="review-title">
                            <span class="name">${item.name}</span>
                            <span class="date">${item.review_time}</span>
                        </div>
                        <div class="review-text">${item.review_content}</div>
                    </div>
                </div>
            `;
            $('.review-module').append(newReviewDiv);
        });
    }
}

// 提交评价
$('#submitReview').click(getComment);

// 回车提交评价
$('#reviewInput').keydown(function (event) {
    if (event.keyCode == 13) {
        getComment();
    }
});

// 获取并保存评论
function getComment() {
    const review_content = $('#reviewInput').val();
    if (!review_content) {
        showPrompt('评价内容不能为空！');
        return;
    }
    if (containsForbiddenWords(review_content)) {
        showPrompt('评价内容包含违禁词，请修改！');
        return;
    }
    const date = new Date().toLocaleString();
    $.post(port + 'saveComment', { paramValue, sourceModule, date, review_content }, function (data) {
        $('#reviewInput').val('');
        data = JSON.parse(data);
        renderNewReview(data, review_content, date);
        updateChart(data);
        getReview(sourceModule);
    });
}

// 显示提示信息
function showPrompt(message) {
    $('.promptBox').text(message).stop().animate({ 'width': '300px', 'height': '40px' }, 500, function () {
        $(this).animate({ width: '0', height: '0' }, 1000, function () {
            $(this).text(''); // 清空文字内容
        });
    });
}

// 渲染新评论
function renderNewReview(data, review_content, date) {
    let newReviewDiv = `
        <div class="review">
            <div class="avatar">
                <img src="${data.module[0].avatar}" alt="">
            </div>
            <div class="review-content">    
                <div class="review-title">
                    <span class="name">${data.module[0].name}</span>
                    <span class="date">${date}</span>
                </div>
                <div class="review-text">${review_content}</div>
            </div>
        </div>
    `;
    $('.review-module').append(newReviewDiv);
    $('.no-review').remove(); // 移除提示信息
    $(`.review-module .review:last-child`).get(0).scrollIntoView({ behavior: 'smooth' });
}

// 更新柱状图的函数，接收一个数据对象作为参数
function updateChart(data) {
    // 统计每个模块的评论数量
    const userReviewCount = data.module.reduce((acc, item) => {
        acc[item.name] = (acc[item.name] || 0) + 1;
        return acc;
    }, {});

    // 获取canvas元素的上下文
    const ctx = document.getElementById('myChart').getContext('2d');
    // 如果已经存在图表实例，则销毁它
    if (myChart) {
        myChart.destroy();
    }
    // 创建新的Chart实例并绘制柱状图
    myChart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels: Object.keys(userReviewCount),
            datasets: [{
                label: '评论数量',
                data: Object.values(userReviewCount),
                backgroundColor: 'rgba(75, 192, 192, 0.2)',
                borderColor: 'rgba(75, 192, 192, 1)',
                borderWidth: 1
            }]
        },
        options: {
            scales: {
                y: {
                    beginAtZero: true
                }
            }
        }
    });
}